home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 25 / Cream of the Crop 25.iso / os2 / mbase101.zip / plugins.Zip / printrec.nrx < prev    next >
Text File  |  1997-04-15  |  5KB  |  193 lines

  1. /* 
  2.    PrintRec, a NetRexx app to create text documents 
  3.    from selected records for printing
  4. */
  5.  
  6. class printrec extends Frame
  7.  
  8. properties public
  9.  
  10. rx = RXFile()
  11. rxPrint = RXFile()
  12. rHowManyFld = Rexx
  13. rHowManyRec = Rexx
  14. rFieldName = Rexx[]
  15. rFieldValue = Rexx[,]
  16. iCount = int
  17. iCount2 = int
  18. iMaxLength = 0
  19. bPrintHeader = boolean 1
  20. bPrintFieldNames = boolean 1
  21. bActuallyPrint = boolean 1
  22. rPrintCommand = Rexx "cmd.exe /c copy printme.txt lpt1:"
  23. rHeader1 = Rexx "MaxBase 1.0, Copyright 1997 Max Marsiglietti -- record dump"
  24. rHeader2 = Rexx "------- ---- --------- ---- --- ------------ -- ------ ----"
  25. rtime = Runtime
  26. pr2 = Process
  27.  
  28. pCenter = Panel -- Here we'll lay all the other textfields/areas, labels.
  29. cbActuallyPrint = CheckBox("Actually Print")
  30. cbPrintHeader = CheckBox("Print Header")
  31. cbPrintFieldNames = CheckBox("Also print FieldNames")
  32. laHeader1 = Label("Header Line 1:")
  33. laHeader2 = Label("Header Line 2:")
  34. tfHeader1 = TextField(rHeader1)
  35. tfHeader2 = TextField(rHeader2)
  36. laPrintCommand = Label("PrintCommand:")
  37. tfPrintCommand = TextField(rPrintCommand)
  38. bPrintIt = Button("Create printme.txt file")
  39.  
  40.  
  41.  
  42. method main(s=String[]) static
  43.  s=s
  44.  printrec()
  45.  
  46.  
  47. method printrec
  48.  
  49. super("Record Printing: 1 record")
  50. super.setResizable(1)
  51.  
  52. rHowManyFld = rx.linein() /* How many fields? */
  53. rFieldName = Rexx[rHowManyFld + 1]
  54.  
  55. loop iCount = 1 to rHowManyFld
  56.  rFieldName[iCount] = rx.linein() /* Get field names */
  57.  if rFieldName[iCount].length > iMaxLength then
  58.   iMaxLength = rFieldName[iCount].length
  59. end
  60.  
  61. rHowManyRec = rx.linein() /* How many records? */
  62. rFieldValue = Rexx[rHowManyFld + 1, rHowManyRec + 1]
  63.  
  64. loop iCount = 1 to rHowManyRec /* Records */
  65.  loop iCount2 = 1 to rHowManyFld
  66.   rFieldValue[iCount2, iCount] = rx.linein()
  67.  end
  68. end
  69.  
  70. /* 
  71.  
  72.    Now we have:
  73.       in rFieldName[1..rHowManyFld] all the field names.
  74.       in rFieldValue[1..rHowManyFld, 1..rHowManyRec] all the records that the user
  75.       has selected before calling the plugin, field by field and record by record.
  76.  
  77.  
  78. */
  79.  
  80.  loop iCount = 1 to rHowManyFld
  81.   rFieldName[iCount] = rFieldName[iCount].left(iMaxLength)
  82.  end
  83.  
  84.  setupFrame
  85.  
  86.  
  87. method setupFrame
  88.  pOne = Panel()
  89.  pTwo = Panel()
  90.  pThree = Panel()
  91.  pFour = Panel()
  92.  
  93.  tfPrintCommand.setBackGround(Color(255, 255, 204))
  94.  tfHeader1.setBackGround(Color(255, 255, 204))
  95.  tfHeader2.setBackGround(Color(255, 255, 204))
  96.  cbActuallyPrint.setState(bActuallyPrint)
  97.  cbPrintHeader.setState(bPrintHeader)
  98.  cbPrintFieldNames.setState(bPrintFieldNames)
  99.  pCenter = Panel()
  100.  pCenter.setLayout(GridLayout(4, 1))
  101.  pCenter.removeAll
  102.  
  103.  pOne.setLayout(FlowLayout(FlowLayout.LEFT))
  104.  pOne.add(laHeader1)
  105.  pOne.add(tfHeader1)
  106.  pCenter.add(pOne)
  107.  
  108.  pTwo.setLayout(FlowLayout(FlowLayout.LEFT))
  109.  pTwo.add(laHeader2)
  110.  pTwo.add(tfHeader2)
  111.  pCenter.add(pTwo)
  112.  
  113.  pThree.setLayout(FlowLayout(FlowLayout.LEFT))
  114.  pThree.add(laPrintCommand)
  115.  pThree.add(tfPrintCommand)
  116.  pCenter.add(pThree)
  117.  
  118.  pFour.setLayout(FlowLayout(FlowLayout.LEFT))
  119.  pFour.add(cbActuallyPrint)
  120.  pFour.add(cbPrintHeader)
  121.  pFour.add(cbPrintFieldNames)
  122.  pCenter.add(pFour)
  123.  
  124.  this.add("Center", pCenter)
  125.  this.add("South", bPrintIt)
  126.  this.reshape(Toolkit.getDefaultToolkit.getScreenSize.width % 2 - 320, Toolkit.getDefaultToolkit.getScreenSize.height %2 - 100, 640, 200)
  127.  if rHowManyRec > 1 then
  128.   this.setTitle("Record printing: "rHowManyRec" records")
  129.  this.show()
  130.  
  131.  
  132. method handleEvent(e=Event) returns boolean
  133.   if e.target = bPrintIt then PrintIt
  134.   if e.id=Event.WINDOW_DESTROY then 
  135.    exit
  136.   return super.handleEvent(e)
  137.  
  138.  
  139.  
  140.  
  141. method Printit
  142.  
  143.  bActuallyPrint = cbActuallyPrint.getState()
  144.  bPrintHeader   = cbPrintHeader.getState()
  145.  bPrintFieldNames   = cbPrintFieldNames.getState()
  146.  rHeader1 =  tfHeader1.getText()
  147.  rHeader2 =  tfHeader2.getText()
  148.  rPrintCommand =  tfPrintCommand.getText()
  149.  
  150.  -- If the file already exists, delete it
  151.  if rxPrint.stream("printme.txt", "c", "query exists") \= "" then
  152.   rxPrint.delete("printme.txt")
  153.  
  154.  -- Create the file
  155.  rxPrint.stream("printme.txt", "c", "open write")
  156.  
  157.  -- create the header
  158.  if bPrintHeader = 1 then
  159.  do
  160.   rxPrint.lineout(rHeader1)
  161.   rxPrint.lineout(rHeader2)
  162.   rxPrint.lineout(" ")
  163.  end
  164.  
  165.  -- now the records (in form view)
  166.  loop iCount = 1 to rHowManyRec
  167.   loop iCount2 = 1 to rHowManyFld
  168.    if bPrintFieldNames = 1 then
  169.     rxPrint.lineout(rFieldName[iCount2] || " : " || rFieldValue[iCount2, iCount].strip())
  170.    else
  171.     rxPrint.lineout(rFieldValue[iCount2, iCount].strip())
  172.   end
  173.   rxPrint.lineout("--")
  174.   rxPrint.lineout(" ")
  175.  end
  176.  -- Close the stream
  177.  rxPrint.stream("printme.txt", "c", "close")
  178.  
  179.  if bActuallyPrint = 1 then
  180.  do
  181.   /* fire up the printing command */
  182.   rtime = Runtime.getRuntime()
  183.   do
  184.    pr2 = rtime.exec(rPrintCommand)
  185.    pr2.waitfor()
  186.   catch IOException
  187.   catch InterruptedException
  188.   catch NullPointerException
  189.    exit
  190.   end
  191.  end
  192.  
  193.